home *** CD-ROM | disk | FTP | other *** search
- {$X+}
-
- { Author Trevor J Carlsen. Released into the public domain. Req TP6 }
- { Compile and run this Program and all keyboard input except keys that }
- { make up a valid passWord will be ignored. In this Case the passWord }
- { is '1234' and the scancodes For those keys are stored in a Constant. }
- { to change the passWord Compute the scancodes For the desired passWord}
- { and change the passWord approriately. }
-
- Uses
- Dos,
- Crt;
-
- Var
- OldInt9 : Pointer; { For storing the old interrupt vector }
- passWord : String[4];
- pwdlen : Byte Absolute passWord;
-
- Procedure RestoreOldInt9;
- { Restores control to the old interrupt handler }
- begin
- SetIntVec($09,OldInt9);
- end;
-
- {$F+}
- Procedure NewInt9; interrupt;
-
- Const
- masterpwd :String[4] = #2#3#4#5; { '1234' scancodes }
- Var
- scancode : Byte;
-
- Procedure ResetKBD;
- Var
- b : Byte;
- begin
- b := port[$61];
- port[$61] := b or $80;
- port[$61] := b;
- port[$20] := $20; { Signals EOI to PIC }
- end;
-
- begin
- scancode := port[$60];
- if chr(scancode) = masterpwd[pwdlen+1] then begin
- passWord[pwdlen+1] := chr(scancode);
- inc(pwdlen);
- if passWord = masterpwd then
- RestoreOldInt9;
- end
- else if not odd(scancode shr 7) then { invalid key }
- pwdlen := 0;
- ResetKBD;
- end;
- {$F-}
-
- begin
- pwdlen := 0;
- GetIntVec($09,OldInt9);
- SetIntVec($09,@NewInt9);
- ReadKey;
- end.
-
-
-
-
- TeeCee
-
-
- --- TC-ED v2.01
- * origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
-